#include "thread_simple.h"
#include "gps.h"
#include "log.h"
#include <stdio.h>
#include <unistd.h>
#include <time.h>

// 全局线程控制器
ThreadCtrl gps_thread = {0};//结构体初始化

// 初始化
void threads_init(void) 
{
    log_init();
    printf("系统初始化\n");
}

// 清理
void threads_cleanup(void) 
{
    stop_all_threads();
    log_close();
    printf("系统清理完成\n");
}

// ==================== GPS线程 ====================

static void* gps_thread_func(void* arg) 
{
    printf("GPS线程启动\n");
    
    gps_init();
    
    // 线程主循环：只要running标志为true就持续运行
    while (gps_thread.running) 
    {
        gps_update();
        sleep(1); // 每秒更新一次
    }
    
    printf("GPS线程退出\n");
    return NULL;
}

// ==================== 线程控制 ====================

void start_all_threads(void) {  

    // 启动GPS线程
    if (!gps_thread.running) 
    {
        gps_thread.running = true;
        pthread_create(&gps_thread.tid, NULL, gps_thread_func, NULL);
    }
    
    printf("所有线程已启动\n");
}

void stop_all_threads(void) 
{  

    // 停止GPS线程
    if (gps_thread.running) 
    {
        // 设置运行标志为false，通知线程退出
        gps_thread.running = false;
        
        // 等待线程结束：
        // - gps_thread.tid: 要等待的线程ID
        // - NULL: 不接收线程返回值
        pthread_join(gps_thread.tid, NULL);
    }
    
    printf("所有线程已停止\n");
}